超详细的5种用户密码加密方式介绍,选择哪种最安全?
2019-08-28 10:02:51
作为互联网公司的信息安全从业人员经常要处理撞库扫号事件(撞库是黑客无聊的“恶作剧”,黑客通过收集互联网已泄露的用户 密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登陆的用户),产生撞库扫号的根本原因是一些企业发生了信息泄露事件,且这些泄露数据未加密或者加密方式比较弱,导致黑客可以还原出原始的用户密码。
以京东之前的撞库举例,首先京东的数据库并没有泄漏。黑客只不过通过“撞库”的手法,“凑巧”获取到了一些京东用户的数据(用户名密码),而这样的手法,几乎可以对付任何网站登录系统,用户在不同网站登录时使用相同的用户名和密码,就相当于给自己配了一把“万能钥匙”,一旦丢失,后果可想而知。
今天主要分别介绍用户密码的加密方式以及主要的破解方法。
彩虹表
用户密码加密方式
用户密码保存到数据库时,常见的加密方式有哪些?以下几种方式是常见的密码保存方式:
1. 明文保存
比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。
2. 对称加密算法来保存
比如3des、aes等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好的方式。
3. md5、sha1等单向hash算法
使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。
其实之前公司也是采用的这种md5加密方式。
4. pbkdf2算法
该算法原理大致相当于在hash算法基础上增加随机盐,并进行多次hash运算,随机盐使得彩虹表的建表难度大幅增加,而多次hash也使得建表和破解的难度都大幅增加。
在使用pbkdf2算法时,hash一般会选用sha1或者sha256,随机盐的长度一般不能少于8字节,hash次数至少也要1000次,这样安全性才足够高。一次密码验证过程进行1000次hash运算,对服务器来说可能只需要1ms,但对于破解者来说计算成本增加了1000倍,而至少8字节随机盐,更是把建表难度提升了n个数量级,使得大批量的破解密码几乎不可行,该算法也是美国国家标准与技术研究院推荐使用的算法。
5. bcrypt、scrypt等算法
这两种算法也可以有效抵御彩虹表,使用这两种算法时也需要指定相应的参数,使破解难度增加。
在密码学中,scrypt(念作“ess crypt”)是colin percival于2009年所发明的金钥推衍函数,当初设计用在他所创立的tarsnap服务上。设计时考虑到大规模的客制硬件攻击而刻意设计需要大量内存运算。
scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利 用rainbow table进行暴力攻击更加困难。scrypt 没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。但是,scrypt 在算法层面只要没有破绽,它的安全性应该高于pbkdf2和bcrypt。
各个算法的特性
总结
采用pbkdf2、bcrypt、scrypt等算法可以有效抵御彩虹表攻击,即使数据泄露,最关键的“用户密码”仍然可以得到有效的保护,黑客无法大批量破解用户密码,从而切断撞库扫号的根源。
稿源:今日头条,封面源自网络;
转载链接:https://www.toutiao.com/i6728359654390235652/
本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、凯发娱乐的版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容![声明]本站文章凯发娱乐的版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。本站拥有对此声明的最终解释权。